package cloud.tianai.ram.policy.client.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author: 天爱有情
 * @date 2022/3/23 15:31
 * @Description Action注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Action {

    @AliasFor("resource")
    String value() default "";

    /** 资源名称. */
    @AliasFor("value")
    String resource() default "";

    /** 描述. */
    String description() default "";

    /** 是否跳过校验. */
    boolean skip() default false;

    /** action. */
    String action() default "exec";

    /** 是否开启自动校验， 如果为true会使用springAOP进行自动校验. */
    boolean autoMatch() default true;

    /** 如果开启自动校验 并且校验过是否抛出异常. */
    boolean hitThrowError() default true;
}
